From: Jan Beulich Date: Fri, 5 Aug 2016 16:00:45 +0000 (+0200) Subject: x86/time: also use rdtsc_ordered() in check_tsc_warp() X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~602 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=7fb0a87d97201f9c3639f85615eacd93110dc1c5;p=xen.git x86/time: also use rdtsc_ordered() in check_tsc_warp() This really was meant to be added in a v2 of what became commit fa74e70500 ("x86/time: introduce and use rdtsc_ordered()"). Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index e64644031d..b316f23c62 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -1146,16 +1146,13 @@ static void local_time_calibration(void) */ static void check_tsc_warp(unsigned long tsc_khz, unsigned long *max_warp) { -#define rdtsc_barrier() mb() static DEFINE_SPINLOCK(sync_lock); static cycles_t last_tsc; cycles_t start, now, prev, end; int i; - rdtsc_barrier(); - start = get_cycles(); - rdtsc_barrier(); + start = rdtsc_ordered(); /* The measurement runs for 20 msecs: */ end = start + tsc_khz * 20ULL; @@ -1170,9 +1167,7 @@ static void check_tsc_warp(unsigned long tsc_khz, unsigned long *max_warp) */ spin_lock(&sync_lock); prev = last_tsc; - rdtsc_barrier(); - now = get_cycles(); - rdtsc_barrier(); + now = rdtsc_ordered(); last_tsc = now; spin_unlock(&sync_lock);